Continuous deployment

Code - including documentation - is automatically transformed to deployed artifacts.

  1. Develop code - including docs -
  2. Lint code. Incorrect? Go to 1
  3. Build code and generate artifacts.
  4. Test artifacts. Incorrect? Go to 1.
  5. Deploy artifacts to the web.

Please not that apart from 1. a script automates all the tasks.

Continuous integration

Code - including documentation - that satisfies the quaity requirements gets commited. Thanks to git hooks implemented in python, we can run quality tools like scc, markdownlint and vale and disallow commits that don't follow the quality standard.

Code checker runs gradle shadowJar, gradle clean, and scc. Doc checker runs markdownlint, markdown-link-checker and vale.

The outputs are:

Staging

Testing m.jar

A custom script checks that all the code blocks in the documentation work as expected. It goes through the markdown pages and gathers code blocks. Then runs the m-compiler.jar with generated files to check that the console output is as expected.

Testing m.html

A selenium script checks that all the block-based code blocks in the documentation work as expected. It goes through the markdown pages and gathers block-based code blocks. Then runs selenium with m.html, inputs the code block and checks that there are no errors.

Testing m.AppImage

A selenium script checks that all the text-based code blocks in the documentation work as expected. It goes through the markdown pages and gathers text-based code blocks. Then runs selenium with m.AppImage electron application, inputs the code block and checks that there are no errors.

Deployment

Upload m.jar, m.html and m.AppImage to a Github release. Host m.html using github-pages. Host browser version of m.AppImage in Glitch.